summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/BlockArea.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/BlockArea.cpp b/src/BlockArea.cpp
index b32851afc..5e66e4aec 100644
--- a/src/BlockArea.cpp
+++ b/src/BlockArea.cpp
@@ -835,7 +835,14 @@ void cBlockArea::Fill(int a_DataTypes, BLOCKTYPE a_BlockType, NIBBLETYPE a_Block
// If the area contains block entities, remove those not matching and replace with whatever block entity block was filled
if (HasBlockEntities() && ((a_DataTypes & baTypes) != 0))
{
- RescanBlockEntities();
+ if (cBlockEntity::IsBlockEntityBlockType(a_BlockType))
+ {
+ RescanBlockEntities();
+ }
+ else
+ {
+ ClearBlockEntities(*m_BlockEntities);
+ }
}
}
@@ -888,7 +895,14 @@ void cBlockArea::FillRelCuboid(int a_MinRelX, int a_MaxRelX, int a_MinRelY, int
// If the area contains block entities, remove those in the affected cuboid and replace with whatever block entity block was filled:
if (HasBlockEntities() && ((a_DataTypes & baTypes) != 0))
{
- RescanBlockEntities();
+ if (cBlockEntity::IsBlockEntityBlockType(a_BlockType))
+ {
+ RescanBlockEntities();
+ }
+ else
+ {
+ ClearBlockEntities(*m_BlockEntities);
+ }
}
}